package paquete;

 //Clase pieza que implementa la intefaz de movimiento 

public class pieza implements movimiento {
	
	private char caracter;
	private int posx;
	private int posy;
	private int color;	
	private int contador;
	private int maxx;
	private int maxy;
	private boolean espieza;
	
	public static final int BLANCO = 0;
	public static final int NEGRO  = 1;
	
	//constructor
	public pieza(char caracter, int posx, int posy, int maxx, int maxy, int color, boolean espieza){
		this.caracter = caracter;
		this.posx     = posx;
		this.posy     = posy;
		this.color    = color;		
		this.maxx     = maxx;
		this.maxy	  = maxy;
		this.espieza  = espieza;
		this.contador = 0;
	}
	
	//constructor
	public pieza(char caracter, boolean espieza, int color){
		this.caracter = caracter;
		this.espieza  = espieza;
		this.color    = color;
	}
	
	public char getcaracter() {
		return caracter;
	}
	
	public int[] getposicion(){
		int[] pos_tmp = {this.posx,this.posy};		
		return pos_tmp;
	} 
	
	public int getposx(){
		return this.posx;
	}
	
	public int getposy(){
		return this.posy;
	}
	
	public int getmaxx(){
		return this.maxx;
	}
	
	public int getmaxy(){
		return this.maxy;
	}
	
	public int[] getmaxxy() {
		int[] maxy_tmp = {this.maxx,this.maxy};
		return maxy_tmp;
	}
	
	public boolean getespiza() {
		return this.espieza;
	}
	
	public int getcontador() {
		return this.contador;
	}
	
	public int getcolor() {
		return this.color;
	}
	
	public void putposicion(int posx, int posy) {
		this.posx = posx;
		this.posy = posy;
	}

	public int boolToInt(boolean b) {
	    return b ? 1 : 0;
	}
	
	public static int signo(int x1, int x2, int y1, int y2, int mod) {
		int signo = 1;
		
		switch (mod) {
		case 0: if(x1>x2 || y1>y2) signo = -1;			
				break;

		case 1: if(x1>x2)		   signo = -1;
				break;		
		case 2:
			break;
		case 99: if(x1!=x2) 	   signo = -1;
			break;
		}
		
		
		return signo;
	}
	
	//condiciones basicas para que todas las piezas puedan tener un movimiento valido
	@Override	
	public boolean movimientosvalidos(int x1, int y1, int x2, int y2,
			pieza[][] tablero, boolean jaque, int contador, int turno) {
		
		
		if(x2>8 || x2<1 || y2>8 || y2<1) return false;
			
		//si el movimiento inicial es el mismo final, osea la pieza no se mueve
		if((x1==x2) && (y1==y2))        return false;
		
		//si las coordenaa de posIni no es una pieza
		if(!tablero[x1][y1].getespiza()) return false;
		
		//
		if(turno!=tablero[x1][y1].getcolor()) return false;
		
		//vefica que el movimineto hecho hacia una posición sea valido a la hora de comer una pieza contraria
		if((tablero[x1][y1].getcolor() == tablero[x2][y2].getcolor()) && tablero[x2][y2].getespiza()) return false;
				
		return true; 
	}

	
	
	
	
}
